package com.infotel.media;

/**
 * @author Infotel
 * @version 1.0 Classe DVD.
 */
public abstract class Oeuvre implements Comparable<Oeuvre> {
    private String titre;
    private String auteur;
    private float prix;

    public Oeuvre(String titre, String auteur, float prix) {
        this.titre = titre;
        this.auteur = auteur;
        if (prix < 0) {
            throw (new IllegalArgumentException());
        } else {
            this.prix = prix;
        }
    }

    /**
     * @return titre titre de l'oeuvre
     */
    public String getTitre() {
        return this.titre;
    }

    /**
     * @return auteur auteur de l'oeuvre
     */
    public String getAuteur() {
        return this.auteur;
    }

    /**
     * @return prix prix de l'oeuvre
     */
    public float getPrix() {
        return this.prix;
    }

    /**
     * @param prix
     *            nouveau prix de l'oeuvre
     */
    public void setPrix(float prix) {
        if (prix < 0) {
            throw (new IllegalArgumentException());
        } else {
            this.prix = prix;
        }
    }

    @Override
    public String toString() {
        return "L'oeuvre " + this.titre + " de " + this.auteur + " coute : "
                + this.prix + " \u20ac";
    }

    @Override
    public boolean equals(Object oeuvre) {
        if (oeuvre instanceof Oeuvre) {
            return this.getTitre().equals(((Oeuvre) oeuvre).getTitre())
                    && this.getAuteur().equals(((Oeuvre) oeuvre).getAuteur());
        } else {
            return false;
        }
    }

    public void setTitre(String titre) {
        this.titre = titre;
    }

    public void setAuteur(String auteur) {
        this.auteur = auteur;
    }

    @Override
    public int hashCode() {
        return (this.getTitre().hashCode() + this.getAuteur().hashCode()) / 2;
    }

}